<?php
/**
 *
 * @package    opensocial
 * @subpackage message
 * @author     Daniel Botelho <botelho.daniel@gmail.com>
 */
abstract class OSMessage
{
  const MESSAGE_CLASS = 'opensocial.Message';

  const EMAIL = 'opensocial.Message.Type.EMAIL';
  const NOTIFICATION = 'opensocial.Message.Type.NOTIFICATION';
  const PRIVATE_MESSAGE = 'opensocial.Message.Type.PRIVATE_MESSAGE';
  const PUBLIC_MESSAGE = 'opensocial.Message.Type.PUBLIC_MESSAGE';


  // nome da variável da message
  private $message_var;
  
  // nome da variável dos parametros da message
  private $messageParams_var;
  private $messageParams = array();

  // nome da variável dos parametros da recipients da message
  private $recipients_var;
  private $recipientsParams = array();


  
  /**
  * Esta classe cria um user em determinado contexto de um pedido ao container, com o seu nome da variável.
  */
  function __construct($var)
  {
    $this->message_var = $var;
    $this->messageParams_var = $message_var.'_params';
    $this->recipients_var = $message_var.'_recipients';
  }

  function getVarName(){ return $this->message_var; }
  function getMessageParamsVarName(){ return $this->messageParams_var; }
  function getMessageParams(){ return $this->messageParams; }
  function getRecipientsParamsVarName(){ return $this->recipients_var; }
  function getRecipientsParams(){ return $this->recipientsParams; }

  public function setTitle($title)
  { 
    $this->activityParams[OSMessageField::TITLE] = "'$title'";
  }

  public function setBody($body)
  { 
    $this->activityParams[OSMessageField::BODY] = "'$body'";
  }

  abstract function getType();
}
